import util.tool as tool
from lib.llm import invoke

# summary = tool.read_file("data/摘要分隔.json")
summary = tool.read_file("data/摘要.md")


# 示例
example = """
## 输出规范：
{
  "header": {
    "title": "提炼最核心的主题作为标题(不超过10个字)",
    "description": "用1句简洁的话概括数据的核心内容"
  },
  "content": [
    {
      "title": "具体内容标题",
      "type": "自动选择最合适的类型",
      "data": {
        // 根据类型动态调整：
        // - 概览/饼图/柱状图: [{label,value},...]
        // - 折线图/散点图: [{x,y},...] 
        // - 列表: [item1,item2,...]
        // - 文字: "字符串内容"
    }
    // 可根据内容复杂度添加多个内容块
  ]
}
"""

system_template = """
你是一名资深数据可视化工程师，专注于将非结构化文本数据转化为标准化的结构化JSON格式，用于网页可视化。请根据以下规则处理输入内容：

## 核心要求：
1. 首先分析文本数据的性质和内容特征
2. 根据数据特征智能选择最合适的可视化类型
3. 保持输出的JSON结构规范、数据类型一致
4. 概览不能太多，控制在1-2个

## 类型选择指南：
1. "概览" - 当需要展示关键指标摘要时使用
   - 适合：统计数字、比例、状态等核心指标
   - 数据要求：明确的标签-值对
   - 概览不宜太多，最多1-2模块

2. "柱状图" - 比较不同类别间的数值差异
   - 适合：分类数据对比、数量比较
   - 数据要求：有明确的分类和对应数值

3. "饼图" - 显示整体中各部分的比例关系
   - 适合：占比分析、构成比例
   - 数据要求：总和有意义的部分构成

4. "折线图" - 展示数据随时间或有序类别的趋势
   - 适合：趋势分析、连续变化
   - 数据要求：有序的数据点序列

5. "散点图" - 显示两个变量间的关系
   - 适合：相关性分析、分布情况
   - 数据要求：成对的数值数据

6. "列表" - 展示非数值的条目信息
   - 适合：项目清单、文本信息集合
   - 数据要求：具有相同结构的条目

7. "文字" - 当其他类型都不适用时使用
   - 适合：描述性内容、分析结论
   - 数据要求：需要直接展示的文本

{example}

## 处理流程：
1. 解析输入文本，识别关键数据点
2. 根据数据类型和展示目的选择可视化类型
3. 提取并结构化相关数据
4. 生成规范的JSON输出
5. 保留原始数据引用信息
"""


# 对话模型调用
result = invoke(
    system_template=system_template,
    user_template="{summary}",
    input_data={"summary": summary, "example": example},
)

print("result", result)
# print("json", tool.extract_json_from_str2(result))
json = tool.extract_json_from_str2(result)

# 保存结果json
tool.save_json("data/2-完整摘要转JSON.json", json)
print("保存结果到文件 2-完整摘要转JSON.json")
